home *** CD-ROM | disk | FTP | other *** search
/ Network CD 2 / Network CD - Volume 2.iso / programs / internet / tcp / mail / amitcp_ups10.lha / amiga / s_socket.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-10-03  |  6.2 KB  |  217 lines

  1.  
  2. /*
  3.  *----------------------------------------------------------------------
  4.  *
  5.  * $Source: qc:c-src/common/misclib/rcs/s_socket.h,v $
  6.  * $Revision: 1.3 $
  7.  * $Date: 1993/10/02 19:34:25 $
  8.  * $State: Exp $
  9.  * $Author: alph $
  10.  * $Locker:  $
  11.  *
  12.  *----------------------------------------------------------------------
  13.  *
  14.  * alph 
  15.  * 
  16.  * This code is (C) Copyright 1993 by Carsten Heyl. All rights reserved.
  17.  * This code is NOT in the Public Domain.
  18.  * It may be copied, modified or distributed as long as this notice is
  19.  * present.
  20.  *
  21.  *----------------------------------------------------------------------
  22.  * $Log: s_socket.h,v $
  23.  * Revision 1.3  1993/10/02  19:34:25  alph
  24.  * fixed sendto typo
  25.  *
  26.  */
  27.  
  28. #include <stdio.h>
  29. #include <stdarg.h>
  30. #include <fcntl.h>
  31. #include <sys/types.h>
  32. #include <proto/socket.h>
  33.  
  34. #define S_MAXFH 32 /* first socket descriptor */
  35.  
  36. #ifdef PRIVATE_SOCKET_H
  37.  
  38. #define _IOSOCK 0x1000 /* socket buffered io */
  39.  
  40. struct __iobufext {
  41.     struct __iobufext *_next;
  42.     unsigned char *_ptr;    /* current buffer pointer */
  43.     int _rcnt;                /* current byte count for reading */
  44.     int _wcnt;                /* current byte count for writing */
  45.     unsigned char *_base;    /* base address of I/O buffer */
  46.     int _size;            /* size of buffer */
  47.     int _flag;                /* control flags */
  48.     int _file;                /* file descriptor */
  49.     unsigned char _cbuff;    /* single char buffer */
  50. };
  51.  
  52. typedef struct __iobufext FILEEXT;
  53. #else
  54. #define FILEEXT FILE
  55.  
  56. #define fclose s_fclose
  57. #define fflush s_fflush
  58. #define freopen s_freopen
  59. #define setbuf s_setbuf
  60. #define setvbuf s_setvbuf
  61. #define fprintf s_fprintf
  62. #define fscanf s_fscanf
  63. #define vfprintf s_vfprintf
  64.  
  65. #define fgetc s_fgetc
  66. #define fgets s_fgets
  67. #define fputc s_fputc
  68. #define fputs s_fputs
  69. #ifdef getc
  70. #undef getc
  71. #endif
  72. #define getc s_getc
  73. #ifdef putc
  74. #undef putc
  75. #endif
  76. #define putc s_putc
  77.  
  78. #define fread s_fread
  79. #define fwrite s_fwrite
  80. #define fgetpos s_fgetpos
  81. #define fseek s_fseek
  82. #define fsetpos s_fsetpos
  83. #define ftell s_ftell
  84. #ifndef rewind
  85. #define rewind s_rewind
  86. #endif
  87. #ifndef clearerr
  88. #define clearerr s_clearerr
  89. #endif
  90. #ifndef feof
  91. #define feof s_feof
  92. #endif
  93. #ifndef ferror
  94. #define ferror s_ferror
  95. #endif
  96. /* FIXME: #define perror s_perror */
  97. #define fdopen s_fdopen
  98.  
  99. /* low level file stuff */
  100. #undef write
  101. #define write s_write
  102. #undef read
  103. #define read s_read
  104. #undef close
  105. #define close s_close
  106. #undef lseek
  107. #define lseek s_lseek
  108. #undef tell
  109. #define tell s_tell
  110. #define isatty s_isatty
  111. #define iomode s_iomode
  112.  
  113. /* socket stuff */
  114. #define accept s_accept
  115. #define bind s_bind
  116. #define CloseSocket s_CloseSocket
  117. #define connect s_connect
  118. #define getpeername s_getpeername
  119. #define getsockname s_getsockname
  120. #define getsockopt s_getsockopt
  121. #define setsockopt s_setsockopt
  122. #define ioctl s_ioctl
  123. #define listen s_listen
  124. #define recv s_recv
  125. #define recvfrom s_recvfrom
  126. #ifdef select
  127. #undef select
  128. #endif
  129. #define select s_select
  130. #define WaitSelect s_WaitSelect
  131. #define send s_send
  132. #define sendto s_sendto
  133. #define shutdown s_shutdown
  134. #define socket s_socket
  135. #define getdtablesize s_getdtablesize
  136. #undef FD_SET
  137. #define    FD_SET(n, p)    ((p)->fds_bits[(n-S_MAXFH)/NFDBITS] |= (1 << ((n-S_MAXFH) % NFDBITS)))
  138. #undef FD_CLR
  139. #define    FD_CLR(n, p)    ((p)->fds_bits[(n-S_MAXFH)/NFDBITS] &= ~(1 << ((n-S_MAXFH) % NFDBITS)))
  140. #undef FD_ISSET
  141. #define    FD_ISSET(n, p)    ((p)->fds_bits[(n-S_MAXFH)/NFDBITS] & (1 << ((n-S_MAXFH) % NFDBITS)))
  142. #endif
  143.  
  144. #define s_getc(p) \
  145.         (((p)->_flag & _IOREAD) ? \
  146.             (--(p)->_rcnt >= 0 && ! ((p)->_file & _IORKEY) ? \
  147.                 *(p)->_ptr++ \
  148.             : \
  149.                 s_fgetc(p)) \
  150.         : \
  151.             s_fgetc(p))
  152.  
  153. #define s_putc(c,p) \
  154.         (((p)->_flag & _IOWRT) ? \
  155.             (++(p)->_wcnt <= (p)->_size ? \
  156.                 ((((int) (*(p)->_ptr++ = ((unsigned char)(c)))) == '\n' && \
  157.                    ((p)->_flag & _IOLBF)) ? \
  158.                     s_fflush(p), ((unsigned char)(c)) \
  159.                 : \
  160.                     ((unsigned char)(c))) \
  161.             : \
  162.                 (--(p)->_wcnt,s_fputc(c,p))) \
  163.         : \
  164.              s_fputc(c,p))
  165.  
  166. /* s_socket.c */
  167. FILE *s_fdopen ( int fd , const char *mode );
  168. void s_fclose ( FILE *af );
  169. size_t s_fread ( void *b , size_t bsize , size_t n , FILE *fp );
  170. size_t s_fwrite ( void *b , size_t bsize , size_t n , FILE *fp );
  171. int s_fgetc ( FILE *af );
  172. int s_fflush ( FILEEXT *af );
  173. int s_vfprintf ( FILE *af , const char *fmt , va_list args );
  174. int s_fprintf ( FILEEXT *af , const char *fmt , ...);
  175. int s_ferror ( FILE *af );
  176. int s_read ( int fh , void *buf , unsigned int len );
  177. int s_write ( int fh , void *buf , unsigned int len );
  178. int s_close ( int sd );
  179.  
  180.  
  181.  
  182. /* s_socket.c */
  183. FILE *s_fdopen ( int fd , const char *mode );
  184. void s_fclose ( FILE *af );
  185. size_t s_fread ( void *b , size_t bsize , size_t n , FILE *fp );
  186. size_t s_fwrite ( void *b , size_t bsize , size_t n , FILE *fp );
  187. char *s_fgets ( char *b , int bsize , FILE *fp );
  188. int s_fputs ( const char *b , FILE *fp );
  189. int s_fseek ( FILE *fp , long rpos , int mode );
  190. int s_fgetc ( FILE *af );
  191. int s_fflush ( FILEEXT *af );
  192. int s_vfprintf ( FILE *af , const char *fmt , va_list args );
  193. int s_fprintf ( FILEEXT *af , const char *fmt , ...);
  194. int s_fputc ( int c , FILEEXT *af );
  195. int s_ferror ( FILE *af );
  196. int s_read ( int fh , void *buf , unsigned int len );
  197. int s_write ( int fh , void *buf , unsigned int len );
  198. int s_close ( int sd );
  199. int s_isatty ( int sd );
  200. int s_iomode(int fd, int mode);
  201. long s_lseek ( int sd , long a , int mode );
  202. long s_accept ( long s , struct sockaddr *addr , int *addrlen );
  203. long s_bind ( long s , struct sockaddr *name , long namelen );
  204. long s_CloseSocket ( long sd );
  205. long s_connect ( long s , struct sockaddr *name , long namelen );
  206. long s_getpeername ( long s , struct sockaddr *name , int *namelen );
  207. long s_getsockname ( long s , struct sockaddr *name , int *namelen );
  208. long s_setsockopt ( long s , long level , long optname , caddr_t optval , long optlen );
  209. long s_listen ( long s , long backlog );
  210. long s_recv ( long s , char *buf , long len , long flags );
  211. long s_recvfrom(long s, char *buf, long len, long flags, 
  212.         struct sockaddr *from, long *len2);
  213. long s_select ( long nfds , fd_set *readfds , fd_set *writefds , fd_set *exceptfds , struct timeval *timeout );
  214. int s_send ( int s , char *msg , int len , int flags );
  215. long s_shutdown ( long s , long how );
  216. long s_socket ( long domain , long type , long protocol );
  217.